home *** CD-ROM | disk | FTP | other *** search
/ Delphi Developer's Kit 1996 / Delphi Developer's Kit 1996.iso / power / heapchk2 / readme.txt < prev    next >
Text File  |  1995-12-22  |  5KB  |  150 lines

  1. HeapChk 0.91 - Test blocks on heap
  2. ==================================
  3.  
  4. This is the second (beta-) version of a utility for Delphi.
  5. Test it and write your comments.
  6.  
  7. HeapChk does:
  8.   - store every allocation and deallocation of heapmemory.
  9.   - add two extra bytes on the end of each block. This bytes
  10.     contains a testpattern to check for blockoverflow.
  11.   - you can check the heap with the function HeapTestCheckPtrs.
  12.     you get a message for every blockoverflow with the sourcecode
  13.     where the block was allocated.
  14.   - on program-exit you get a file (normaly DUMP.TXT) with a list
  15.     of every non-deallocated block.
  16.  
  17. How to use it.
  18.   1. !!! Switch Option/Project/Linker/Mapfile to 'detailed' !!!
  19.      !!! and    Option/Project/Compiler/Debuginfos to 'ON'  !!!
  20.  
  21.   2. Insert 'HeapChk' in the uses-statement of the projectfile (*.DPR)
  22.  
  23.   3. Make a testbutton in a form.
  24.      in testbutton-OnClick write the line
  25.         HeapTestCheckPtrs;
  26.      and in the uses-statement of the Form insert 'HeapTest';
  27.  
  28.   4. Click the button and the check is done.
  29.  
  30. There is a Testproject (HEAP.* und HAEPTST.*) for more features.
  31.  
  32. Unit HEAPCHK
  33. ============
  34. you should insert this Unit as the first Unit in the DPR-File
  35.  
  36.   var HeapCheckActive : boolean;
  37.      True, when HeapChk was installed. If this variable is False
  38.      you have probably a wrong Delphi-Version. It patched WMEM.OBJ
  39.      on runtime and checked the code before.
  40.  
  41.   procedure HeapLogOff;
  42.      switch Heap-Logging off. No registration of any allocation or deallocation
  43.  
  44.   procedure HeapLogOn;
  45.      switch Heap-Logging on
  46.  
  47.   !!! New !!!
  48.   procedure HeapTestClear;
  49.      clears the internal list of allocated blocks. This procedure should be
  50.      called in the DPR-File after the 'begin'-statement.
  51.      The result is a cleaner DUMP.TXT because blocks allocated by the RTL
  52.      on startup wouldn't be listed. Look in the example.
  53.  
  54.  
  55. Unit HEAPTEST
  56. =============
  57. you should insert this Unit in your project.
  58.  
  59.   var HeapTestSearchPath : string;
  60.      Searchpath for sourcefiles. HEAPTEST use this path to display the
  61.      source in the HeapTestCheckPtrs-Dialog.
  62.  
  63.   var HeapTestDumpFile   : string;
  64.      Name and path of the Dumpfile after programm-execution.
  65.      Default is 'DUMP.TXT';
  66.      When this string is empty, no Dumpfile will be generated.
  67.  
  68.   function  HeapTestCheckPtr( var pt : pointer) : integer;
  69.      Test a single pointer.
  70.      Results:
  71.         HEAPCHECK_OKAY     = 1   ( block Okay )
  72.         HEAPCHECK_OVERFLOW = 2   ( someone have written to much )
  73.         HEAPCHECK_NOTFOUND = 3   ( block dosn't exist on heap )
  74.  
  75.   function  HeapTestCheckPtrs                   : integer;
  76.      Test all blocks on heap.
  77.      Result:
  78.         HEAPCHECK_OKAY     = 1   ( all blocks Okay )
  79.         HEAPCHECK_OVERFLOW = 2   ( one or more blocks overflowed )
  80.                                  for every pointer a dialog pops up and
  81.                                  show the callstack at allocation-time
  82.                                  (when there are debug-infos)
  83.  
  84.   procedure HeapTestShowPtrs; far;
  85.      writes the DUMP.TXT. This procedure will execute automaticly on
  86.      program-exit.
  87.  
  88. thats all.
  89. I hope, you understand my english.
  90.  
  91. this is a betaversion for testing. Use it on your own risk. I haven't decide
  92. what to do with it. Maybe I put it in public domain, shareware etc, when the
  93. first golden code is ready.
  94.  
  95. Version 0.91
  96. ============
  97. new features:
  98. -- procedure HeapTestClear;
  99.    look in the example
  100.  
  101. -- optimized for speed (much!)
  102.  
  103. -- version 0.90 needs a component 'BorderPanel' that was not included.
  104.    This referenz is removed.
  105.  
  106. -- some minor bugfixes
  107.  
  108. shareware-version
  109. =================
  110. I'm currently work on a sharewareversion with more features. Look at the
  111. example and the dumpfile 'SHAREWAR.DMP' for features implemented yet.
  112.  
  113. features of the sharewareversion:
  114.   -- Log all overflows in the DUMP-File. The trial-version checks only blocks
  115.      that exist at check-time, and ignors blocks, that was deallocated
  116.      before the check. This blocks will be listed in the DUMP-File.
  117.  
  118.   -- Shows the maximum of stack, local heap and heapmemory.
  119.  
  120.   -- utility to view the dumpfile with sourcecode.
  121.  
  122.   -- utility to configure the heaptest. You can exclude units (eg classes)
  123.      in the stack-trace.
  124.  
  125.   -- the sharewareverison will include the BorderPanel-componentas a free gift.
  126.      this component is a panel with inner and outer borders. (put a memofield
  127.      with no border in a panel, set the align of the memo to alClient, and you
  128.      see the reason for such a component)
  129.  
  130.   -- more features will be included.
  131.  
  132.   If you are interested in the shareware-version, please contact me.
  133.  
  134.  
  135.  
  136. write comments to
  137.   Frank Mertsch - Roger Nelke
  138.   CS-ID 100024, 2711
  139.  
  140.  
  141. Happy bugging
  142.   roger
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.